package com.ls.lserp.modules.job.service;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.ls.lserp.common.utils.ResourcesUtil;
import com.ls.lserp.dbaccess.Dao.OrderEntityMapper;
import com.ls.lserp.dbaccess.Entity.OrderEntity;

/**
 * @ClassName : OrderStatusSyncService
 * @Description : ERP订单状态数据与平台数据同步
 * @author : shaoyun.tan
 * @date : 2018年6月20日
 */
@Service
@Transactional(readOnly = false)
public class OrderStatusSyncService {

	
	@Autowired
	private OrderEntityMapper orderEntityMapper;// o_order_p 定制订单表


	/**
	 * @Title : findOrderList
	 * @Description : 取得平台生产中订单数据
	 * @return
	 * @throws SQLException
	 * @return : List<OrderEntity>
	 *
	 * @author : shaoyun.tan
	 * @date : 2018年6月20日
	 */
	public List<OrderEntity> findOrderList(OrderEntity orderEntity) throws SQLException {
		
		return orderEntityMapper.findOrderList(orderEntity);
	}
	
	/**
	 * 根据平台订单信息在ERP中获取生产完成订单数据
	 * @param orderEntityList
	 * @return
	 * @throws SQLException
	 * 
	 * @author : shaoyun.tan
	 * @date : 2018年6月20日
	 */
	public List<OrderEntity> findOrderListERP(OrderEntity orderEntity) throws SQLException {
		// 临时订单集
		List<OrderEntity> tempList = new ArrayList<OrderEntity>();
		orderEntity.setOrderTypeCd(ResourcesUtil.getConfig("order_type-type_20"));
		// 设置订单状态为生产完成
		orderEntity.setOrderStatusCd(ResourcesUtil.getConfig("Processing_40"));
		// 获取订单数据并添加到集合中
		tempList.addAll(findOrderList(orderEntity));
		// 设置订单状态为已发货
		orderEntity.setOrderStatusCd(ResourcesUtil.getConfig("Transit_50"));
		// 获取订单数据并添加到集合中
		tempList.addAll(findOrderList(orderEntity));
		/*// 临时订单实体
		OrderEntity tempEntity = new OrderEntity();
		if (orderEntityList != null && orderEntityList.size() > 0) {
			// 遍历数据
			for (OrderEntity oEntity : orderEntityList) {
				// 根据平台订单信息在ERP中获取订单数据
				tempEntity = orderEntityMapper.getOrderInfo(oEntity);
				// 如果数据存在且订单状态为生产完成，则留下
				if (tempEntity != null && ResourcesUtil.getConfig("Processing_40").equals(tempEntity.getOrderStatusCd())) {
					tempList.add(tempEntity);
				}
			}
		}*/
		// 返回数据
		return tempList;
	}

	/**
	 * @Title : updateOrderStatus
	 * @Description : 更新平台订单数据
	 * @return
	 * @throws SQLException
	 *
	 * @author : shaoyun.tan
	 * @date : 2018年6月20日
	 */
	public void updateOrderStatus(List<OrderEntity> orderEntityList) throws SQLException {
		if (orderEntityList != null && orderEntityList.size() > 0) {
			// 遍历数据
			for (OrderEntity oEntity : orderEntityList) {
				// 更新操作
				orderEntityMapper.updateOrderStatus(oEntity);
			}
		}
	}


}
